define content length header with bulk upload requests
authorMatthieu Gallien <matthieu.gallien@nextcloud.com>
Wed, 19 Mar 2025 16:44:51 +0000 (17:44 +0100)
committerMatthieu Gallien <matthieu.gallien@nextcloud.com>
Thu, 10 Apr 2025 12:55:40 +0000 (14:55 +0200)
Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
src/libsync/putmultifilejob.cpp

index 9b26f56afa6023e83b5a01e1f5724567cc95289c..99825dd04b11452f6822f5d6ad431e5fd431db48 100644 (file)
@@ -41,6 +41,8 @@ void PutMultiFileJob::start()
 {
     QNetworkRequest req;
 
+    auto fullSize = 0;
+
     for(const auto &oneDevice : _devices) {
         // Our rate limits in UploadDevice::readData will cause an application freeze if used here.
         // QHttpMultiPart's internal QHttpMultiPartIODevice::readData will loop over and over trying
@@ -51,6 +53,7 @@ void PutMultiFileJob::start()
 
         auto onePart = QHttpPart{};
 
+        fullSize += oneDevice._device->size();
         if (oneDevice._device->size() == 0) {
             onePart.setBody({});
         } else {
@@ -72,6 +75,8 @@ void PutMultiFileJob::start()
     }
 
     req.setAttribute(QNetworkRequest::DoNotBufferUploadDataAttribute, true);
+    req.setHeader(QNetworkRequest::ContentLengthHeader, fullSize);
+
     sendRequest("POST", _url, req, &_body);
 
     if (reply()->error() != QNetworkReply::NoError) {